<?php

namespace App\Services\Contract;

use App\Models\Project;

interface ProjectServiceInterface extends ServiceErrorInterface {

    /**
     * @param $query
     * @param $pageSize
     * @return mixed
     */
    public function paginate(array $query, int $pageSize);

    /**
     * 重命名
     * @param int $id 项目id
     * @param string $title 项目名
     * @return bool
     */
    public function rename(int $id, string $title) : bool;

    /**
     * 创建表
     * @param int $templateId 模板ID
     * @param string $title
     * @return Project|null
     * @throws \Exception
     */
    public function create(int $templateId, string $title) : ?Project;

    /**
     * 保存为副本
     * @param int $id 项目id
     * @return Project|null
     */
    public function copy(int $id) : ?Project;

    /**
     * 移到回收站
     * @param int $id 项目id
     * @return bool
     */
    public function trash(int $id) : bool;

    /**
     * 移出回收站
     * @param int $id 项目id
     * @return bool
     */
    public function restore(int $id) : bool;

}